package com.rmiad.controller;

import cn.dev33.satoken.stp.StpUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.noear.snack.ONode;
import org.noear.solon.Solon;
import org.noear.solon.annotation.Mapping;
import org.noear.solon.annotation.Post;
import org.noear.solon.core.handle.Context;
import org.noear.solon.core.handle.Result;

import java.io.IOException;

/**
 * @author wyl
 * @date 2025年05月02日 上午9:36
 */
@Api("登录控制器")  //v2.3.8 之前要用：@Api(tags = "控制器")
public class LoginController {

    @ApiOperation("登录")
    @Post
    @Mapping("/login")
    public Result<String> login(Context ctx) throws IOException {
        String body = ctx.body();
        if (body == null || body.isEmpty()) {
            return Result.failure("请求体不能为空");
        }

        ONode bodyJson = ONode.loadStr(body);
        String username = bodyJson.get("username").getString();
        String password = bodyJson.get("password").getString();

        // 校验用户名和密码是否为空
        if (username == null || username.isEmpty() || password == null || password.isEmpty()) {
            return Result.failure("用户名或密码不能为空");
        }

        if (username.equals(Solon.cfg().get("fliad.username", "admin")) &&
                password.equals(Solon.cfg().get("fliad.password", "admin"))) {
            // 重定向到首页
            StpUtil.login(username);
            return Result.succeed();
        } else {
            return Result.failure("用户名或者密码错误");
        }
    }

    @Post
    @Mapping("/logout")
    public Result<String> logout(Context ctx) throws IOException {
        StpUtil.logout();
        return Result.succeed();
    }

}
